In recent years, client/server network architectures have increasingly relied on distributed server environments to efficiently provide network-based services to large numbers of users. The increased use of distributed server environments, however, has produced a need for methods and systems to ensure service quality across servers and clients involved in a distributed server environment.
The traditional client/server architecture is a network architecture in which each computer or process on a network is either a client or a server. The device running the client for one process, however, may run the server for another process, and vice versa. Client/server architectures are often suitable for use in enterprise applications in which multiple clients share the resources of a server to which the clients connect. The transmission control protocol/internet protocol (TCP/IP) is a standard way for clients and servers to exchange packets of data. In client/server architectures, client and server connections can be persistent or on demand.
The client/server model is based around clients connecting to a single central server or to multiple servers. The clients can send and receive messages from the server while the server maintains a global state. In the client/server model, the client opens up a channel of communication with the server and requests a service. The server receives the request, fulfills the service request, and sends the response to the client, closing the channel of communication. As illustratively shown in FIG. 1, a client (101)/server (103) pair having an isolated transaction between them can use an on-demand connection (105) to communicate. In this situation, the server does not keep open its channel of communication with the client, and the client-server pair closes the connection (105) once the isolated transaction is completed. The server further does not maintain the client connection or the requested service information associated with the isolated transaction.
Instead of using an on-demand connection, a client/server pair can alternatively use a persistent connection to communicate with each other, as illustratively shown in FIG. 2. The TCP protocol supports a connection-oriented data transfer between two processes running on two computers on the Internet, and provides reliable two-way data exchange between processes. In order to reuse an existing connection, a short message point-to-point (SMPP) network protocol can be used to establish a persistent connection between a client and a server. A TCP/IP persistent connection (205), for example, uses the same TCP connection to send and receive multiple requests/responses between the client (201) and the server (203) of the pair, instead of opening a new connection between the client/server for every single request/response. Persistent connections allow for notable performance gains by reducing network traffic due to fewer operations of setting up and tearing down of TCP connections. Persistent client/server connections thus reduce latency on subsequent requests by removing the need for repeated initial TCP handshakes. Enabling long lasting connections also allows TCP sufficient time to determine the congestion state of the network and react appropriately to the congestion.
Distributed server environments are increasingly being relied on to provide network-based services to users. Distributed server environments are applications that provide services by using a plurality of servers across a network. Distributed server environments rely on protocols to coordinate the actions of multiple processes performed on multiple servers on a network, such that all components cooperate together to perform a single or a set of related tasks.
While the use of persistent connections and of distributed server environments each allow for performance gains in network services, they are not without problems. Persistent connections can be dropped by the client or the server using the connection, causing communication across the connection to be lost. Similarly, a server outage or dropped connection in a single server or connection of a distributed server environment can cause the distributed server environment to fail. Hence a need exists for monitoring persistent client connection status in distributed server environments to improve service reliability and to improve performance.